package com.gewu.pm.ui.activity.filter.config;

/**
 * 筛选项类型枚举
 * 
 * 定义了6种筛选UI组件类型，用于配置筛选页面的展示形式
 * 
 * 使用场景：
 * - 在 FilterConfig.Builder 中通过不同的 add 方法自动设置类型
 * - FilterManager 根据类型动态生成对应的UI组件
 * 
 * @author AI Assistant
 * @since 1.0
 */
public enum FilterType {
    
    /**
     * 文本选择器（点击弹出对话框）
     * 
     * UI表现：
     * - 显示为一个可点击的TextView
     * - 点击后弹出对话框（如选择销售区域、业务员等）
     * - 选择后显示选中的文本
     * 
     * 适用场景：
     * - 销售区域选择
     * - 业务员选择
     * - 提交人选择
     * - 配送商选择等
     * 
     * 配置示例：
     * .addTextSelector("sales_area", "销售区域", "请选择销售区域", SelectorType.SALES_REGION)
     */
    TEXT_SELECTOR,
    
    /**
     * 标签选择器（RecyclerView网格，单选）
     * 
     * UI表现：
     * - 显示为网格布局的标签列表
     * - 点击标签进行单选
     * - 选中的标签显示红色边框
     * 
     * 适用场景：
     * - 订单状态选择（单选）
     * - 类型选择（单选）
     * - 分类选择（单选）
     * 
     * 配置示例：
     * .addTagSelector("status", "订单状态", 3, "待审批", "已审批", "已拒绝")
     */
    TAG_SELECTOR,
    
    /**
     * 多选标签选择器（RecyclerView网格，多选）
     * 
     * UI表现：
     * - 显示为网格布局的标签列表
     * - 点击标签进行多选
     * - 选中的标签显示红色边框和角标数字
     * 
     * 适用场景：
     * - 多个状态同时筛选
     * - 多个类型同时筛选
     * 
     * 配置示例：
     * .addMultiTagSelector("status", "拜访状态", 3, "待拜访", "拜访中", "已完成")
     */
    MULTI_TAG_SELECTOR,
    
    /**
     * 时间选择器（RecyclerView网格）
     * 
     * UI表现：
     * - 显示为网格布局的时间选项
     * - 内置8个快捷选项：今日、昨日、本周、本月、近7天、近30天、近90天、自定义
     * - 点击进行单选
     * 
     * 适用场景：
     * - 提交时间筛选
     * - 创建时间筛选
     * - 统计时间筛选
     * 
     * 配置示例：
     * .addTimeSelector("submit_time", "提交时间", 3)
     */
    TIME_SELECTOR,
    
    /**
     * 日期范围选择器（开始时间-结束时间）
     * 
     * UI表现：
     * - 显示为两个并排的日期选择框
     * - 左边：开始时间
     * - 右边：结束时间
     * - 点击弹出日期选择对话框
     * 
     * 适用场景：
     * - 需要精确指定时间范围的场景
     * - 配合时间选择器使用（时间选择器选"自定义"时使用此组件）
     * 
     * 数据收集：
     * - key_start：开始时间
     * - key_end：结束时间
     * 
     * 配置示例：
     * .addDateRangeSelector("date_range", "日期范围")
     */
    DATE_RANGE_SELECTOR,
    
    /**
     * 金额范围选择器（最小金额-最大金额）
     * 
     * UI表现：
     * - 显示为两个并排的输入框
     * - 左边：最小金额
     * - 右边：最大金额
     * - 自动限制只能输入数字和小数点（最多2位小数）
     * 
     * 适用场景：
     * - 收款金额筛选
     * - 订单金额筛选
     * - 金豆数量筛选
     * 
     * 数据收集：
     * - key_min：最小金额
     * - key_max：最大金额
     * 
     * 配置示例：
     * .addAmountRangeSelector("amount", "收款金额")
     */
    AMOUNT_RANGE_SELECTOR
}
